/*
 * @Author: 张颖星 yingxing.zhang@trustway.cn
 * @Date: 2023-12-07 13:21:44
 * @LastEditors: 张颖星 yingxing.zhang@trustway.cn
 * @LastEditTime: 2024-01-12 15:17:20
 * @FilePath: \physiotherapysystem-web\src\views\OperateManagement\MarketingManagements\ShopActivity\Components\NewcomerDiscount\action.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
const _handlerShop = (arr)=>{
  return arr.every((item)=>{
    if(item.isHall){
      return false
    }
    return item.isShop
  })
}

const _handlerBrand = (arr)=>{
  return Array.from(new Set(arr.map(v=>v.brandId).filter(s=>s)))?.length
}

/** 
 * 处理门店业务变化
 * @param {Array} oldStores 旧门店数据
 * @param {Array} newStores 新门店数据
 * @returns {Boolean} true:有变化 false:没有变化
*/
export const useDiffStoreValue = (oldStores,newStores)=>{
  if(!oldStores.length || !newStores.length) return false
  // 当isShop全为true时判断为商城业务，否则判定为理疗业务 isHall:是否为理疗馆业务 isShop:是否为商城业务
  const isOldShop = _handlerShop(oldStores)
  const isNewShop = _handlerShop(newStores)
  // 当旧数据为理疗馆业务时，返回新的商城业务；否则返回新的理疗馆业务
  // return isOldShop ? !isNewShop : isNewShop
  return !(_handlerBrand(oldStores) == _handlerBrand(newStores))
}





/**
 * 判断门店品牌是否发生变化
 * @param {Array} oldIds 
 * @param {Array} newIds 
 * @returns 
 */
export const useDiffBrandId = (oldIds, newIds) => {
  const uniqueArr1 = [...new Set(oldIds)];
  const uniqueArr2 = [...new Set(newIds)];
   // 步骤 1: 检查长度是否相等
   if (uniqueArr1.length !== uniqueArr2.length) {
    return true; 
  }

  // 步骤 2: 检查每个元素是否相等
  for (let i = 0; i < uniqueArr1.length; i++) {
    if (uniqueArr1[i] !== uniqueArr2[i]) {
      return true; // 有元素不相等，有变化
    }
  }

  // 步骤 3: 长度相等且所有元素相等，没有变化
  return false;
}


  // ============时间戳比较==============
  export const compareTimestampsAndValidate = (timestamp1, timestamp2) => {
    // 将时间戳转换为 Date 对象
    const date1 = new Date(timestamp1);
    const date2 = new Date(timestamp2);
  
    // 获取时间戳的数值表示
    const time1 = date1.getTime();
    const time2 = date2.getTime();
  
    // 比较时间戳并确保第二个时间戳小于第一个时间戳
    if (time2 > time1) {
      // 确保第二个时间戳不小于当前时间
      const currentTime = new Date().getTime();
      if (time2 > currentTime) {
        return true; // 符合条件
      }
    }
  
    return false; // 不符合条件
  }